参数置换变量是另一种为变量赋值的方式,其一般形式如下:
变量2=${变量1 op 字符串}
以下各变量的具体取值,如未说明则表示其值不变
①变量2=${变量1:-字符串}
若变量1的值为空,则变量2=字符串;
若变量1的值不为空,则变量2=变量1。
$ var1=
$ var2=${var1:-world}
$ echo $var1$ echo $var2
world
-----------------------
$ var1=hello
$ var2=${var1:-world}
$ echo $var1
hello
$ echo $var2
hello
②变量2=${变量1:=字符串}
若变量1的值为空,则变量1=变量2=字符串;
若变量1的值不为空,则变量2=变量1。
$ var1=
$ var2=${var1:=world}
$ echo $var1
world
$ echo $var2
world
-----------------------
$ var1=hello
$ var2=${var1:=world}
$ echo $var1
hello
$ echo $var2
hello
③变量2=${变量1:+字符串}
若变量1的值为空,则变量2=变量1=空串;
若变量1的值不为空,则变量2=字符串。
$ var1=
$ var2=${var1:+world}
$ echo $var1$ echo $var2-----------------------
$ var1=hello
$ var2=${var1:+world}
$ echo $var1
hello
$ echo $var2
world
④变量2=${变量1:?字符串}
若变量1的值为空,则按指定格式“shell脚本名:变量1:字符串”显示,并退出当前shell;
若变量1的值不为空,则变量2=变量1。
$ var1=
$ var2=original
$ var2=${var1:?world}
bash: var1: world
$ echo $var1$ echo $var2
original
-----------------------
$ var1=hello
$ var2=original
$ var2=${var1:?world}
$ echo $var1
hello
$ echo $var2
hello